d51f45894f04c5afccd9a078f24bd2dd70e4fb10,java/src/org/exist/jms/replication/subscribe/ReplicationJmsListener.java,ReplicationJmsListener,relocateDocument,#eXistMessage#boolean#,725

Before Change


        int lockTypeOriginal = keepDocument ? Lock.READ_LOCK : Lock.WRITE_LOCK;

        Txn txn = txnManager.beginTransaction();
        setOrigin(txn);

        try {
            broker = brokerPool.get(Optional.of(securityManager.getSystemSubject()));

            // Open collection if possible, else abort
            srcCollection = broker.openCollection(sourceColURI, lockTypeOriginal);
            if (srcCollection == null) {
                String errorMessage = String.format("Collection not found: %s", sourceColURI);
                LOG.error(errorMessage);
                txnManager.abort(txn);

                // be silent
                return;
            }

            // Open document if possible, else abort
            srcDocument = srcCollection.getDocument(broker, sourceDocURI);
            if (srcDocument == null) {
                String errorMessage = String.format("No resource found for path: %s", sourcePath);
                LOG.error(errorMessage);
                txnManager.abort(txn);

                // be silent
                return;
            }

            // Open collection if possible, else abort
            destCollection = broker.openCollection(destColURI, Lock.WRITE_LOCK);
            if (destCollection == null) {
                String errorMessage = String.format("Destination collection %s does not exist.", destColURI);
                LOG.error(errorMessage);
                txnManager.abort(txn);

                // be silent
                return;
            }

            // Perform actial move/copy
            if (keepDocument) {
                broker.copyResource(txn, srcDocument, destCollection, destDocURI);

            } else {
                broker.moveResource(txn, srcDocument, destCollection, destDocURI);
            }

            // Commit change
            txnManager.commit(txn);

        } catch (Throwable e) {
            LOG.error(e);
            txnManager.abort(txn);
            throw new MessageReceiveException(e.getMessage(), e);

        } finally {

After Change


        try (DBBroker broker = brokerPool.get(Optional.of(securityManager.getSystemSubject()));
             Txn txn = txnManager.beginTransaction()) {

            setOrigin(txn);

            // Open collection if possible, else abort
            srcCollection = broker.openCollection(sourceColURI, lockTypeOriginal);
            if (srcCollection == null) {
                LOG.error(String.format("Collection not found: %s", sourceColURI));
                txn.abort();
                return; // be silent
            }